Brouillon avant de compléter ou créer un nouvelle page concernant l'authentification d'un utilisateur avec Samba AD DC
La version actuelle se trouve ici Samba - Active Directory Domain Controller (AD DC) …
…
Avant toute installation, il est nécessaire de définir son environnement. Ainsi, il sera possible de configurer correctement son serveur. Le reste de cette documentation se basera sur les paramètres suivants :
| Nom de domaine | example.com |
| Royaume (realm) | EXAMPLE.COM |
| Nom de NetBIOS | example |
| Nom du serveur | ubndc01 |
| Adresse IP du serveur | 192.168.1.11 |
| Rôle du serveur | DC (contrôleur de domaine) |
…
…
…
…
…
…
…
…
…
…
…
…
…
Afin de réaliser l'authentification des utilisateurs d'AD, plusieurs méthodes existent :
Seule cette dernière méthode est expliquée dans cette documentation.
Les paquets suivants sont requis pour la mise en œuvre de cette authentification.
sudo apt-get install libnss-winbind libpam-winbind winbind
Premièrement, il faut configurer le Name Service Switch (nsswitch) par l'ajout de winbind comme méthode pour les sections passwd et group
...
passwd: compat winbind
group: compat winbind
...
Ceci permet d'utiliser les utilisateurs et groupes venant de AD. Par défaut sur un DC, les commandes ci-dessous retourne la liste de tous les utilisateurs et groupes.
getent passwd getent group
Création du home directory pour l'utilisateur du domaine.
Default: no
Priority: 900
Session-Type: Additional
Session-Final:
required pam_mkhomedir.so skel=/etc/skel umask=0077 silent
Alternative en mofdifiant le fichier /usr/share/pam-config/winbind
...
Session:
optional pam_winbind.so mkhomedir
...
Un autre alternative consiste à monter le home directory de l'utilisateur lors du login. Une option du fichier de configuration /etc/samba/smb.conf est homedir map = auto.home. Ceci fait référence à autofs. Développement Ult.
Possibilité de limiter l'accès à un ou plusieurs groupes ou utilisateurs sur base du SID Ajouter require_membership_of=SID à la fin de la ligne pam_winbind.so de la section Auth: du fichier /usr/share/pam-config/winbind
...
Auth:
[success=end default=ignore] pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass required_membership_of=S-1-5-21-5555555555-555555555-5555555555-512
...
Le RID 512 représente le groupe Domain Admins
Activer cette nouvelle configuration :
sudo pam-auth-update
Le script suivant permet d'ajouter les uidNumber et gidNumber pour chaque utilisateur et chaque groupe de l'AD.
#!/bin/bash # Vérifier si ces valeurs existent dans smb.conf # idmap config REALM:range = min-max rangeMin=100000 rangeMax=999999 sam=/var/lib/samba/private/sam.ldb createTmpDir() { tmpDir=$(mktemp -d --tmpdir addGid.XXXXXX) || exit 1 tmpRecord=$tmpDir/record_ tmpLdif=$tmpDir/ldif } cleanTmpDir() { rm $tmpDir/* } removeTmpDir() { rm -r $tmpDir } findMaxId() { ldbsearch -H $sam "$regexp" $field | sed '/^# Referral/ { :loop; N; $! b loop; d; }; s/^\([a-zA-Z0-9]*\): \(.*\)$/\1="\2"/g; /^$/d;' | awk '/^# record/{n++}{print > f n}' f=$tmpRecord maxID=$rangeMin for file in `grep -l -E "^$field=" ${tmpRecord}*` do source $file if [ ${!field} -gt $rangeMax ] then echo "Warning: $field ${!field} for $dn is bigger than max id $rangeMax" 1>&2 elif [ ${!field} -lt $rangeMin ] then echo "Warning: $field ${!field} for $dn is lower than min id $rangeMin" 1>&2 else [ ${!field} -gt $maxID ] && maxID=${!field} fi done echo "Max ID found for $field: $maxID" } addIdNumber() { for file in `grep -L -E "^$field=" ${tmpRecord}*` do ((maxID++)) source $file echo "Adding $field: $maxID for dn: $dn" echo "dn: $dn changetype: modify add: $field $field: $maxID" > $tmpLdif ldbmodify -H $sam $tmpLdif done } umask 0077 createTmpDir field=uidNumber regexp="(&(objectclass=user)(!(objectclass=computer)))" findMaxId addIdNumber cleanTmpDir field=gidNumber regexp="(objectclass=group)" findMaxId addIdNumber cleanTmpDir removeTmpDir exit 0
…